Skip to content

feat/qg-253: реализована интеграция с Google Calendar#288

Merged
d-r-q merged 44 commits intomasterfrom
qg-253/google-cal-integration
Sep 29, 2025
Merged

feat/qg-253: реализована интеграция с Google Calendar#288
d-r-q merged 44 commits intomasterfrom
qg-253/google-cal-integration

Conversation

@d-r-q
Copy link
Copy Markdown
Member

@d-r-q d-r-q commented Sep 19, 2025

No description provided.

@d-r-q d-r-q force-pushed the qg-253/google-cal-integration branch 3 times, most recently from 74b3d1f to 4a1f209 Compare September 19, 2025 08:56
@github-actions
Copy link
Copy Markdown

github-actions bot commented Sep 19, 2025

Unit Test Results

  68 files    68 suites   1m 18s ⏱️
233 tests 233 ✔️ 0 💤 0
243 runs  243 ✔️ 0 💤 0

Results for commit 3429ead.

♻️ This comment has been updated with latest results.

@d-r-q d-r-q force-pushed the qg-253/google-cal-integration branch from 4a1f209 to d470229 Compare September 21, 2025 12:13
Для того чтобы его можно было использовать вне контекста базового класса теста
…RestAssured

Для того чтобы в одном тесте можно было использовать и новые методы на базе WebTestClient и старые ещё не переведённые с RestAssured
Для того, чтобы работу через него можно было совмещать с работой через RestAssured. Плюс пока основной контекст поднимает Томкэт эффекта от MockMvc не много
Потому что Котлин DSL сильно урезанный и его недопиливают - wiremock/kotlin-wiremock#37

Плюс попутно выяснилось, что Kotlin DSL подменял \r\n на \n в ответе, поэтому так же был удалён костыль с обратной заменой в методе париснга ics-строк
…алендарей при возврате после авторизации в гугле

Попутно добавлено кэширование календарей и эвентов, чтобы повысить UX возврата в приложение и навешан констрейнт уникальности на гугл аккаунт терапевта
Чтобы при фетче событий можно было из БД доставать только включенные календари и аккаунты, нужные для их чтения
Чтобы он не светился в логах через toString
…по черновику и по дефолту приёмы создаются в таймзоне пользователя
Триггер - метод findById( therapistRef: TherapistRef, eventId: UUID ), который реализовать, конечно, не сложно, но он не используется.

Это навело меня на мысль, что приём это не is a CalendarItem, а у него есть компонент Событие. На самом деле у меня изначально была идея вытащить календарные даты в отдельную сущность. В том числе потому что это позволило бы связывать приёмы с событиями разных календарей (а не костылить как сейчас, что в расписании приём просто перекрывает события из других календарей с такими же датами). Но тогда я решил, что это слишком трудоёмко.
Для повышения надёжности. В частности для матчинга урлов с вложенными uri с query-параметрами в качестве значений query-параметров url
Чтобы не переизобретать велосипед для строкового представления универсальных идентификаторов ресурсов, чем SourceItem собственно и был
@d-r-q d-r-q force-pushed the qg-253/google-cal-integration branch from d470229 to 16af6e5 Compare September 26, 2025 04:59
Чтобы пройти верификацию в гугле, чтобы токены не протухали за неделю
@d-r-q d-r-q force-pushed the qg-253/google-cal-integration branch from d2f7492 to 0b9aca4 Compare September 26, 2025 10:07
Чтобы пройти верификацию в гугле, чтобы токены не протухали за неделю
…arsService.findCalendarItemsInInterval перенесена в DAO
…унтов

Т.к. без верификации приложени в Гугле refresh-токены живут всего неделю, обновить их программно невозможно, а верификация - этот тот ещё челлендж, который сейчас проходить не целесообразно.

Поэтому в качестве костыля будем слать напоминания внести приёмы на следующуюю неделю если их там нет и пользователь по напоминанию будет заходить в календарь, видеть предупреждение и заново добавлять свой аккаунт.
@d-r-q d-r-q enabled auto-merge September 29, 2025 12:34
@d-r-q d-r-q merged commit 81b8197 into master Sep 29, 2025
5 checks passed
@d-r-q d-r-q deleted the qg-253/google-cal-integration branch September 30, 2025 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant